Circuit and method for providing secure communications between devices

ABSTRACT

An electronic system and method for providing secure communications between devices. The secure communications are maintained through use of an integrity check value (ICV) that accompanies a message. The ICV is used to determine whether the contents of a message have been modified during transmission. An efficient technique for producing the ICV involves bitwise arithmetic operations and “exclusive OR” operations between data associated with the message (in its non-encrypted format) and coefficients of a matrix. The “coefficients” are selected bits from a pseudo-random data stream created by a cipher engine from keying material used in communications between the devices.

BACKGROUND

[0001] 1. Field

[0002] The present invention relates to the field of cryptography. Moreparticularly, the present invention relates to a circuit and method forproviding secure communications between devices.

[0003] 2. General Background

[0004] It is well known that computers can be used to process and storesensitive information in a digital form. For example, computers may beused to conduct financial transactions such as adjusting credit card orbank account balances, metering electronic content usage, and the like.Due to the sensitive nature of this information, it has become necessaryto ensure that its integrity is protected during transmission betweendevices in different computers as well as between devices within thesame computer.

[0005] A number of cryptographic techniques are available to establishsecure communications between two devices. Herein, communications aredeemed “secure” when information sent over a normally unprotectedcommunication medium is protected against observation, tampering, andreplay of previously-recorded valid information. Some of these availablecryptographic techniques involve a block cipher function and/or a streamcipher function.

[0006] Referring to FIG. 1, an illustrative embodiment of the generalfunctionality of a conventional block cipher function is shown. Inparticular, a group of data bits (referred to as “incoming data”) 110 isloaded into a cipher engine 100. Normally, (block) cipher engine 100 issoftware that produces an encrypted output “E(data)” 120 by successivelyencrypting groups of bits at a time in accordance with a predeterminedsymmetric key encryption function. One example of a symmetric keyencryption function includes Data Encryption Standard (DES) as set forthin Federal Information Processing Standards Publication 46-2 publishedon or around Dec. 30, 1993. A significant disadvantage associated withmany block cipher functions is that they cannot support securecommunications at a high transmission rate. Rather, significant latencyis realized between the receipt of incoming data 110 and the productionof encrypted output 120.

[0007] As shown in FIG. 2, an illustrative embodiment of the generalfunctionality of a conventional stream cipher function is shown. Inparticular, a set of bits (referred to as “configuration data”) 210 isloaded into a cipher engine acting as a pseudo-random stream generator200. When configuration data 210 is keying material, a pseudo-randomstream generator 200 produces a pseudo-random stream 220 that canoperate effectively as a One-Time Pad (OTP). Namely, pseudo-randomstream 220 may be used to encrypt (or decrypt) data 230 by exclusivelyOR'ing (XOR'ing) data 230 with pseudo-random stream 220. This operationproduces an encrypted (or decrypted) data stream 240 and causes minimallatency because pseudo-random stream 220 may be pre-computed. While thisapproach protects against eavesdropping and replay attacks on thecommunication stream, it is extremely susceptible to tampering orinadvertent corruption because a targeted bit of data 230 may be alteredin a coherent and intended manner by modifying a selected bit ofencrypted data stream 240.

[0008] In an effort to overcome this tampering susceptibility, anintegrity checksum 250 may be generated concurrently with encrypted datastream 240. Integrity checksum 250 accompanies encrypted data stream 240and is used to determine whether data stream 240 has been modifiedduring transmission. One type of integrity checksum is in accordancewith DES Message Authentication Code (MAC), which is calculated using ablock ciphering function. However, the use of a DES MAC integritychecksum in combination with stream ciphering would reintroduce thelatency disadvantages realized by block ciphers.

[0009] Hence, it is desirable to develop an efficient and cost effectivetechnique by which various devices may securely communicate with eachother with minimal latency. Similarly, an integrity mechanism for suchcommunication may alternatively be used in the absence of encryption toprovide for a high-integrity, low-latency communication channel.

SUMMARY

[0010] Briefly, one embodiment of the invention is a method for securingcommunications between a first device and a second device. The methodcomprises (i) mutually authenticating the first device and the seconddevice, (ii) generating an integrity check value by the first device,and (iii) sending the integrity check value with a message from thefirst device to the second device.

BRIEF DESCRIPTION OF THE DRAWINGS

[0011] The features and advantages of the present invention will becomeapparent from the following detailed description of the presentinvention in which:

[0012]FIG. 1 is an illustrative embodiment of the general functionalityof a conventional block cipher function.

[0013]FIG. 2 is an illustrative embodiment of the general functionalityof a conventional stream cipher function.

[0014]FIG. 3 an illustrative embodiment of an electronic systememploying the present invention.

[0015]FIG. 4A is an illustrative embodiment of a second device of theelectronic system of FIG. 3.

[0016]FIG. 4B is an illustrative embodiment of communication logic ofthe second device of FIGS. 3 and 4A.

[0017]FIG. 5 is an illustrative embodiment of a first device of theelectronic system of FIG. 3.

[0018]FIGS. 6A and 6B are illustrative block diagrams of a firstembodiment of an integrity check value (ICV) generator employed in thesecond device of FIGS. 3 and 4A.

[0019]FIG. 7 is an illustrative block diagram of a second embodiment ofthe ICV generator employed in the second device of FIGS. 3 and 4A.

[0020]FIGS. 8A and 8B are illustrative flowcharts of the operations toestablish and maintain secure communications between the first andsecond devices of FIG. 3.

DETAILED DESCRIPTION

[0021] The present invention relates to an electronic system and methodfor providing secure communications between devices. More specifically,secure communications are maintained through use of an integrity checkvalue (ICV) that accompanies a message in an encrypted or non-encryptedformat. The ICV is used to determine whether the contents of a messagehave been modified during transmission. As described below, an efficienttechnique for producing the ICV without experiencing high latencyquantitative definition involves bitwise multiplication and “exclusiveOR” operations between data associated with the message (in itsnon-encrypted format) and coefficients of a matrix. The “coefficients”are selected bits from a pseudo-random data stream created from keyingmaterial used in communications between two or more devices.

[0022] In the following description, certain terminology is used todescribe certain features of the present invention. More specifically,an “electronic system” is defined as hardware implemented with aprocessor. Examples of an electronic system include a computer (e.g.,laptop, desktop, hand-held, server, mainframe, etc.), imaging equipment(e.g., printer, facsimile machine, scanner, digital camera, etc.),set-top box (e.g., receiver or transceiver hardware for receipt of cableor satellite signals), wireless communication equipment (e.g., cellularphone), a consumer electronic appliance and the like. A “processor”includes logic capable of processing information such as amicroprocessor, a microcontroller, a state machine and the like.

[0023] A “bus” is generally defined as any medium over which informationmay be transferred such as, for example, electrical wire, optical fiber,cable, plain old telephone system (POTS) lines, wireless (e.g.,satellite, radio frequency “RF”, infrared, etc.) and the like.“Information” is defined as data, address, control or any combinationthereof. A “message” is generally defined as information intended to betransferred in a sequence of one or more transmissions.

[0024] With respect to cryptography related terminology, the term“secure” generally indicates a condition where information is protectedagainst observation, productive tampering, and replay. “Keying material”includes any encoding and/or decoding parameter used by cryptographicfunctions (also referred to as “ciphers” or “cipher functions”) such asData Encryption Standard (DES) for example. One type of parameter is a“symmetric key” which is a device-shared key held in secrecy by two ormore devices. Another type of parameter includes an “asymmetric key”featuring a first key (e.g., a public key) normally used for encryptionand a second key (e.g., a “private” key) normally used for decryption. A“digital certificate chain” includes either a single digital certificateor an ordered sequence of digital certificates arranged forauthorization purposes as described below, where each successivecertificate represents the issuer of the preceding certificate.

[0025] Referring to FIG. 3, an illustrative embodiment of an electronicsystem 300 employing the present invention is shown. Electronic system300 comprises a first device (e.g., a processor) 310 and a second device320. In this embodiment, second device 320 is a memory such asnon-volatile memory (e.g., flash memory, any type of read only memory“ROM”, battery-backed random access memory “RAM”, or even volatilememory). First device 310 and second device 320 are placed in securecommunications with each other over a bus 330. As a result, access tostorage area of second device 320 can be restricted to onlyauthenticated processing logic devices such as first device 310.Similarly, first device 310 is capable of authenticating second device320 to achieve a high confidence level that data stored in second device320 is valid.

[0026] Referring now to FIGS. 4A and 4B, an embodiment of second device320 is shown. In FIG. 4A, second device 320 includes a memory 400 and asmall amount of communication logic 430 coupled together through a bus435. In this embodiment, memory 400 includes keying material 420 and/orat least one digital certificate chain 410, which are stored normally atmanufacture. Of course, it is contemplated that digital certificatechain 410 and/or keying material 420 may be produced and stored inmemory 400 after manufacture.

[0027] In one embodiment, keying material 420 includes at least aprivate key of a device-specific asymmetric key pair used bycommunication logic 430 within second device 320, namely its cipherengine, to (i) encrypt or decrypt the information, or (ii) establish asession key used for that purpose. The public key of the key pair iswidely available to other systems as well as electronic system 300. Forthis embodiment, the “session” key is a temporarily key for use during aparticular secure communications sequence and may be created inaccordance with a well-known Diffie-Hellman technique as described inU.S. Pat. No. 4,200,770. Alternatively, keying material 420 may includea symmetric key, which may be used by cipher engines of both firstdevice 310 and second device 320 to produce a session key. In lieu of orin addition to asymmetric and/or symmetric key(s), keying material 420may temporarily store one or more session keys if memory 400 includesvolatile memory.

[0028] As shown in FIG. 4B, communication logic 430 includes a cipherengine 440 designed to perform cryptographic operations in accordancewith a selected stream cipher such as, for example, DES operating incounter mode. When loaded with keying material 420 such as a session keyused in communications with first device 310 of FIG. 3, cipher engine440 produces a pseudo-random data stream 450. This data stream 450effectively operates as a One-Time Pad (OTP). For this embodiment, anICV generator 490 is used to generate a N-bit ICV 480 based on a portion460 (e.g., group of bits or bytes) of data stream 450 and dataassociated with a message 470. Optionally, this portion 460 may be usedto generate N-bit ICV 480 based on address or other relevant information(e.g., data type) associated with message 470. The value of “N” isdetermined by requirements of attack resistance, and may range from 16to 32 for example. It is contemplated that this or another portion ofdata stream 450 may be used for encrypting/decrypting message 470 and/orICV 480.

[0029] Referring to FIG. 5, an embodiment of first device 310 is shown.First device 310 includes processing logic 500 and a small amount ofinternal memory 510, each contained in a package 520 and coupled to abus 525. Memory 510 may include at least one digital certificate chain530 and keying material 540, each of which is stored either atmanufacture or after manufacture. Keying material 540 includes (i) oneor more keys of an asymmetric key pair (e.g., its private key), (ii) asymmetric key, and/or (iii) one or more session keys. A stream cipherengine 550, either software loaded in memory 510 as shown, a part ofprocessing logic 500 or a combination of both, is used to produce an OTPfor encryption/decryption and data integrity verification when using anICV.

[0030] Referring now to FIG. 6A, a block diagram illustrating a firstembodiment of an integrity check value (ICV) generator 490 of FIG. 4Athat generates ICV 480 to accompany message 470 in an encrypted ornon-encrypted format is shown. Cipher engine 440 produces pseudo-randomdata stream 450 based on keying material 420. For this embodiment,pseudo-random data stream 450 includes at least thirty-five bits(r_(xy)). A selected number of pseudo-random bits are extracted frompseudo-random data stream 450 in order to produce an integrity matrix600. Herein, as shown in FIG. 6B, the selected pseudo-random bitsinclude r₀₀-r₀₄, -r₁₀-r₁₄, r₂₀-r₂₄, r₃₀-r₃₄, r₄₀-r₄₄, r₅₀-r₅₄, andr₆₀-r₆₄ for example.

[0031] “Integrity matrix” 600 includes M rows 610, which corresponds toa group of M message bits 630 received for each transfer cycle in orderto compute ICV 480 (“M” is a positive whole number). The number ofreiterative transfer cycles needed to load the entire message andcompute ICV is equivalent to the rounded-up whole number result of thesize of the message (in bits) divided by M (in bits). Integrity matrix600 further includes N columns 620, which dictate the size of ICV 480.Thus, the size of ICV 480 is programmable based on the selected columnsize (N) 620 of integrity matrix 600.

[0032] During computations of ICV 480, arithmetic and logic operationsare performed by calculation unit 640 on message 470 and contents ofintegrity matrix 600. More specifically, each group of M message bits630 is bitwise multiplied with each coefficient of a corresponding rowof integrity matrix 600 to produce resultant values. As shown in FIG.6B, message bits 630 include seven (M=7) bits identified as m₀-m₆.Thereafter, the resultant values within each column of integrity matrix600 are XOR'ed together to produce a bit of ICV 480. Thus, as shown inTable 1, since integrity matrix 600 includes five columns (N=5), ICV 480is represented as a five bit result (ICV₁-ICV₅) and is computed asfollows: TABLE 1 ICV bit COMPUTED VALUE ICV₁ m₀r₀₀ XOR m₁r₁₀ XOR m₂r₂₀XOR m₃r₃₀ XOR m₄r₄₀ XOR m₅r₅₀ XOR m₆r₆₀ ICV₂ m₀r₀₁ XOR m₁r₁₁ XOR m₂r₂₁XOR m₃r₃₁ XOR m₄r₄₁ XOR m₅r₅₁ XOR m₆r₆₁ ICV₃ m₀r₀₂ XOR m₁r₁₂ XOR m₂r₂₂XOR m₃r₃₂ XOR m₄r₄₂ XOR m₅r₅₂ XOR m₆r₆₂ ICV₄ m₀r₀₃ XOR m₁r₁₃ XOR m₂r₂₃XOR m₃r₃₃ XOR m₄r₄₃ XOR m₅r₅₃ XOR m₆r₆₃ ICV₅ m₀r₀₄ XOR m₁r₁₄ XOR m₂r₂₄XOR m₃r₃₄ XOR m₄r₄₄ XOR m₅r₅₄ XOR m₆r₆₄

[0033] The changing of a single bit of message 470 results in thechanging of statistically 50% of the integrity bits, but in anexternally unpredictable pattern. Since the receiving device regeneratesthe ICV based on the incoming message and knowledge of the session key,and uses it to validate the incoming ICV, an attack on the message(whether in cyphertext or plaintext form) in an attempt to create afraudulent message that will be accepted as valid, must also correctlycompute a corresponding ICV. Since the attacker does not know thecoefficients of the matrix (not knowing the session key that producesthe pseudo random stream), the probability of success is only 1 in2^(N).

[0034] Referring now to FIG. 7, a block diagram illustrating a secondembodiment of ICV generator 490 of FIG. 4A producing an ICV 480 toaccompany a message in an encrypted or non-encrypted format is shown.This embodiment utilizes a Toplitz matrix 700 in lieu of integritymatrix 600 of FIGS. 6A and 6B. The reason is that it is expected thatintegrity matrix 600 would be changed in its entirety after each access.This places a significant bandwidth requirement on the pseudo-random bitstream generator.

[0035] As shown, Toplitz matrix 700 includes M bits in a first column710. These bits are repeated in successive columns 711-714 of matrix700, but are rotated by at least one position to fill matrix 700. Thus,only M bits of pseudo-random data are required to repopulate matrix 700on each access (when M≧N). In this embodiment, N is less that or equalto M. Otherwise some bits of the resultant ICV would be identical andcontribute nothing to increase tamper-resistance.

[0036] During computations of ICV 480, each group of M message bits 720is bitwise multiplied with each pseudo-random bit of a corresponding rowof matrix 700 as denoted by “x” in FIG. 7 to produce resultant values.Thereafter, the resultant values within each column of matrix 700 areXOR'ed together to produce a bit of ICV 480. Thus, as shown in Table 2,since matrix 700 includes five columns (N=5), ICV 480 is represented asa five bit result (ICV₁-ICV₅) and is computed as follows: TABLE 2 ICVbit COMPUTED VALUE ICV₁ m₀r₀ XOR m₁r₁ XOR m₂r₂ XOR m₃r₃ XOR m₄r₄ XORm₅r₅ XOR m₆r₆ ICV₂ m₀r₆ XOR m₁r₀ XOR m₂r₁ XOR m₃r₂ XOR m₄r₃ XOR m₅r₄ XORm₆r₅ ICV₃ m₀r₅ XOR m₁r₆ XOR m₂r₀ XOR m₃r₁ XOR m₄r₂ XOR m₅r₃ XOR m₆r₄ICV₄ m₀r₄ XOR m₁r₅ XOR m₂r₆ XOR m₃r₀ XOR m₄r₁ XOR m₅r₂ XOR m₆r₃ ICV₅m₀r₃ XOR m₁r₄ XOR m₂r₅ XOR m₃r₆ XOR m₄r₀ XOR m₅r₁ XOR m₆r₂

[0037] Referring to FIGS. 8A and 8B, illustrative flowcharts of theoperations for establishing and maintaining low-latency, securecommunications between two devices implemented within an electronicsystem are shown. To establish secure communication between the twodevices (e.g., processor 310 and memory device 320 of FIG. 3), forexample, two general operations may be performed; namely, (1) mutualauthentication (challenge/response protocol) and session key developmentusing the digital certificate chains of the devices, and (2) productionof the ICV using the shared session key. These operations may beperformed by hardware, software, or firmware.

[0038] With respect to the first operation, a cipher engine at a firstdevice (e.g., cipher engine 550 of processor 310 of FIG. 5) issues achallenge to a cipher engine at a second device (e.g., cipher engine 440of memory device 320 of FIG. 4B) as shown in block 800. For thisembodiment, the “challenge” may include a random number and theprestored digital certificate chain associated with the processor. Thecipher engine of the second device responds by returning at least therandom number, either digitally-signed with its internally-storeddevice-specific private key or otherwise processed under a shared-secretchallenge/response protocol. Additionally, the response may include itspre-stored digital certificate (block 805). The use of the digitalcertificate chains allows the first and second devices to mutuallyauthenticate each other. The challenge/response procedure is thenrepeated with the roles of the two devices reversed, such that thesecond device challenges the first device. Thereafter, these cipherengines may operate in accordance with a well-known Diffie-Hellmantechnique in order to establish a session key between the two devices(block 810).

[0039] Alternatively, the challenge/response authentication protocol canbe combined with Diffie-Hellman session key establishment in thewell-known technique of “authenticated key establishment”, wherein theDiffie-Hellman values exchanged are digitally signed.

[0040] With respect to the second operation, the session key (or aportion thereof) is input into a cipher engine to produce apseudo-random data stream (block 815). This data stream is used as aOne-Time Pad (OTP). Certain bits of the OTP are selected to populate anintegrity matrix or a Toplitz matrix as described above (block 820). Thebit selection may be based on predetermined bit locations of the OTP. Asshown in FIGS. 6A, 6B and 7, by performing bitwise multiplication on amessage and corresponding rows of the matrix followed by separate XORoperations on the resultant values along columns of the matrix, anintegrity check value (ICV) is produced (block 825).

[0041] Thereafter, if encryption is desired, a different portion of theOTP is logically XOR'ed with a message in its non-encrypted form priorto transmission to a cipher engine at the destination (e.g., cipherengine 440 of second device 320 in FIG. 4A) as shown in blocks 830 and835. This XOR'ing may be performed in serial bitwise fashion or inparallel with any number of bits in order to encrypt the digitalinformation. Likewise, the ICV may be encrypted through the same XORoperation (blocks 840 and 845). This encryption protocol is extremelyefficient because message encryption, ICV computation, and ICVencryption can be theoretically and practically performed in a singleclock cycle. The output (the message and ICV) are transferred to thesecond device (destination) as shown in block 850.

[0042] At the destination (second device), cipher engine 440 of FIG. 4Ais used to decrypt the incoming information by again XOR'ing thatinformation with identical portions of the identically-generated OTP inorder to obtain the information in a non-encrypted form (blocks 855 and860). This mechanism requires the generation of the two pseudo-randomdata streams in synchronization, typically assured by always processingthe same amount of information at both the second and first devices.This assures that the pseudo-random data stream is “consumed” at amatching rate. Placement of DES into a counter mode provides for easymaintenance of synchronization because the counter values in use by eachpseudo-random stream generator need not be kept secret and may beexchanged “in the clear” between the two devices. If synchronization isever lost, the counter containing the “lower” counter value is simplyset forward to match the contents of the other counter. Because thecounter can never be “set back”, the pseudo-random stream can never beforced to repeat, which is a critical feature to allow its use as anOTP. If the counter ever reaches its maximum value, a new session keymust be negotiated to create an entirely new OTP. Note that the aboveprocedures are directed to the use of “DES” cipher, but it isanticipated that other stream ciphers that may not use pseudo-randomstreams may be employed.

[0043] Thereafter, the recovered ICV is compared with the ICV generatedat the second device (blocks 865 and 870). If a match is detected, thecommunications are secure (block 875). Otherwise, communications areinsecure (block 880). An error would likely be reported to the userwarning that the communications are not secure.

[0044] Of course, there exist alternative methods for authentication andsession key development. For example, well-known in the art,shared-secret symmetric keys may be used to exchange information inorder to produce one or more temporary session keys therefrom. Thepresent invention may utilize this type of authentication method insteadof the method described in FIGS. 8A and 8B.

[0045] While certain exemplary embodiments have been described and shownin the accompanying drawings, it is to be understood that suchembodiments are merely illustrative of and not restrictive on the broadinvention, and that this invention not be limited to the specificconstructions and arrangements shown and described, since various othermodifications may occur to those ordinarily skilled in the art.

1. (Cancelled.)
 2. A method for securing communications between a firstdevice and a second device, the method comprising: mutuallyauthenticating the first device and the second device; generating anintegrity check value by the first device, comprises: extracting aselected number of bits from a pseudo-random data stream for use ascoefficients of a matrix having M rows and N columns, and performingoperations on both contents of the message and the coefficients of thematrix to generate the integrity check value; and sending the integritycheck value with a message from the first device to the second device.3. The method of claim 2, wherein prior to extracting the selectednumber of bits from the pseudo-random data stream, the method comprises:inputting keying material into a cipher engine performing operations inaccordance with a predetermined stream cipher; and producing thepseudo-random data stream by the cipher engine.
 4. The method of claim3, wherein the predetermined stream cipher is Data Encryption Standardin counter mode.
 5. The method of claim 2, wherein the extracting of theselected number of bits includes assigning M bits from the selectednumber of bits as a first column of the matrix; and reiterativelyassigning M unique bits from a remainder of the selected number of bitsfor each remaining column of the matrix.
 6. The method of claim 5,wherein the performing of the operations includes performing arithmeticoperations on M bits from the content of the message and correspondingcoefficients of the first column of the matrix to produce a firstplurality of resultant values; and performing exclusive OR operationsbetween each of the first plurality of resultant values to produce a bitof the integrity check value.
 7. The method of claim 6, wherein thearithmetic operations are bitwise multiplication operations.
 8. Themethod of claim of claim 6, wherein the performing of the operationsfurther includes performing arithmetic operations on the M bits from thecontent of the message with corresponding coefficients for a remainingN−1 columns of the matrix to produce a second plurality of resultantvalues associated with each of the remaining N−1 columns; and performingexclusive OR operations between resultant values associated with eachremaining N−1 column of the matrix to produce N−1 bits of the integritycheck value.
 9. The method of claim 2, wherein the extracting of theselected number of bits includes assigning M bits from the selectednumber of bits as a first column of the matrix; and reiterativelyreassigning the M bits in accordance with a predetermined bit rotationfor columns of the matrix excluding the first column.
 10. The method ofclaim 9, wherein the performing of the operations includes multiplying Mbits from the content of the message with corresponding coefficients ofthe N columns of the matrix to produce a plurality of resultant valuesassociated with each coefficient of the matrix; and performing exclusiveOR operations on the plurality of resultant values along the N columnsof the matrix to produce N bits of the integrity check value.
 11. Themethod of claim 10, wherein the performing of the operations furtherincludes: reiteratively computing the integrity check value based onsuccessive groups of bits of the message.
 12. (Cancelled.)
 13. A methodcomprising: decrypting an incoming message; computing an integrity checkvalue for the incoming message; and determining whether the incomingmessage is valid by comparing the computed integrity check value with arecovered integrity check value accompanying the incoming message. 14.The method of claim 13, wherein the decrypting of the incoming messageincludes producing a pseudo-random data stream; extracting apredetermined number of bits from the pseudo-random data stream; andexclusively OR'ing portions of the incoming message with thepredetermined number of bits from the pseudo-random data stream.
 15. Themethod of claim 13, wherein the computing of the integrity check valueincludes producing a pseudo-random data stream; extracting a selectednumber of bits from the pseudo-random data stream to generate a matrixhaving M rows and N columns where M and N are positive whole numbers;multiplying M bit values of the message with corresponding coefficientsof the N columns of the matrix to produce a plurality of resultantvalues; and performing exclusive OR operations between resultant valuesassociated with each column of the matrix to produce N bits of theintegrity check value.
 16. The method of claim 14, wherein the computingof the integrity check value includes extracting a selected number ofbits from the pseudo-random data stream to generate a matrix having Mrows and N columns; multiplying M bit values of a first group of bits ofthe message with corresponding coefficients of the N columns of thematrix to produce a plurality of resultant values associated with eachof the coefficients; and performing exclusive OR operations betweenresultant values associated with each of the N columns of the matrix toproduce N bits of the integrity check value.
 17. The method of claim 16,wherein the bits associated with the selected number of bits differ fromthe bits associated with the predetermined number of bits.
 18. Anelectronic system comprising: a first device to generate an integritycheck value and transmit the integrity check value along with a messagethe first device comprises an integrity check value (ICV) generator toproduce the integrity check value based on a selected group of bits froma pseudo-random data stream and contents of the message; and a seconddevice to determine whether the message has been altered by comparing anewly generated integrity check value with the integrity check valuerecovered with the message.
 19. The electronic system of claim 18,wherein the first device is a processor and the second device is amemory.
 20. (Cancelled)
 21. (Cancelled)